#include <REGX52.H>

#include "XPT2046.h"
#include "Delay.h"
#include "lcd1602.h"
#include "timer0.h"
unsigned int Counter,Compare=90,
  Model=1;// 模式切换  0-AD（模数），1-DA（数模）
/**
 * 函    数：显示可调电位器的值
 * 参    数：无
 * 返 回 值：无
 */
void ShowDianWei()
{
	int  AIN0;
	float ADC_VOL;

	AIN0=XPT2046_ReadAD(0x94);
	//LCD_ShowBinNum(1,1,AIN0,12);
	ADC_VOL=(5.0*AIN0/4096)*10;
	LCD_ShowNum(2,1,((int)ADC_VOL)/10,1);
	LCD_ShowString(2,2,".");
	LCD_ShowNum(2,3,((int)ADC_VOL)%10,1);
	LCD_ShowNum(2,4,((int)(ADC_VOL*10))%10,1);
	LCD_ShowNum(2,5,((int)(ADC_VOL*100))%10,1);
}
/**
 * 函    数：显示光敏电阻的值
 * 参    数：无
 * 返 回 值：无
 */
void ShowGuangMin()
{
	int  AIN1;
	AIN1=XPT2046_ReadAD(0xA4);
	//LCD_ShowBinNum(1,1,AIN1,12);
	LCD_ShowNum(2,7,AIN1/1000,1);
	LCD_ShowNum(2,8,AIN1%1000/100,1);
	LCD_ShowNum(2,9,AIN1%100/10,1);
	LCD_ShowNum(2,10,AIN1%10,1);
  
}
/**
 * 函    数：显示热敏电阻的值
 * 参    数：无
 * 返 回 值：无
 */
void ShowReMin()
{
	int  AIN2;

	AIN2=XPT2046_ReadAD(0xD4);
	//LCD_ShowBinNum(1,1,AIN2,12);
	LCD_ShowNum(2,12,AIN2/1000,1);
	LCD_ShowNum(2,13,AIN2%1000/100,1);
	LCD_ShowNum(2,14,AIN2%1000%100/10,1);
	LCD_ShowNum(2,15,AIN2%1000%100%10,1);
}
/**
 * 函    数： 数字型号 转 模拟信号
 * 参    数：无
 * 返 回 值：无
 */
void SetDA()
{
	int i=0;
	for(i=0;i<100;i++)
	{
		Compare=i;
		Delay_ms(5);
	}

	for(i=100;i>0;i--)
	{
		Compare=i;
		Delay_ms(5);
	}
}
/**
 * 函    数：主函数
 * 参    数：无
 * 返 回 值：无
 */
void main()
{
	if(Model==1) {
		Timer0_Init();//初始化定时器 
	}
	LCD_Init();
	while(1)
	{
		switch(Model)
		{
			case 0:
			{
				//依次显示 电位器   光敏   热敏
				LCD_ShowString(1,1," DW    GM   RM");
				ShowDianWei();//电位器
				Delay_ms(10);
				ShowGuangMin();//光敏电阻
				Delay_ms(10);
				ShowReMin();//热敏电阻
				Delay_ms(10); 
				break;
			}
			case 1:
			{      
				LCD_ShowString(1,1,"DA            ");
				LCD_ShowString(2,1,"                ");
				SetDA();
				break;
			}

		}
	}  
	while(1)
	{
	}
}

 /**
  * 函    数：定时器中断函数
  * 参    数：无
  * 返 回 值：无
  */
void Timer0_Routine() interrupt 1
{
	TL0 = 0x9C;			//设置定时初值
	TH0 = 0xFF;			//设置定时初值
	Counter++;
	Counter%=100;
	if(Counter>=Compare)
	{
		P2_1=1;//熄灭
	}
	else {
		P2_1=0;//点亮
	}
}